package com.example.springboot.controller.数据库;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.bean.Login;
import com.example.springboot.bean.LoginUser;
import com.example.springboot.bean.UserLong;
import com.example.springboot.service.LoginService;
import com.example.springboot.service.UserLongService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.Arrays;
import java.util.List;

/**
 * <artifactId>mybatis-spring-boot-starter</artifactId>
 * 导的包 会有自动配置类
 *     mybatis-spring-boot-autoconfigure-2.2.0.jar
 *   和 mybatis-spring-boot-starter-2.2.0.jar
 *
 * 在 autoconfigure的
 * META-INF 里有一个
 *  spring.factories 文件 的内容 会自动加载
 *  ”“这个是重点  如何自动配置都在这里“”
 *  EnableAutoConfiguration 指定的类
 *  表示我把哪些类引入
 *
 * 配置模式
 * ● 全局配置文件
 * ● SqlSessionFactory: 自动配置好了
 * ● SqlSession：自动配置了 SqlSessionTemplate 组合了 SqlSession
 * ● @Import(AutoConfiguredMapperScannerRegistrar.class）；
 * ● Mapper： 只要我们写的操作MyBatis的接口标准了 @Mapper 就会被自动扫描进来
 *
 */

/**
 * <artifactId>mybatis-plus-boot-starter</artifactId>
 * mybatis-plus  自带 jdbc  和 mybatis
 * 可以下载mybatisx  的小鸟插键
 *
 * ● MybatisPlusAutoConfiguration 配置类，MybatisPlusProperties 配置项绑定。
 *    mybatis-plus：xxx 就是对mybatis-plus的定制
 * ● SqlSessionFactory 自动配置好。底层是容器中默认的数据源
 * ● mapperLocations 自动配置好的。有默认值。classpath*:/mapper/** /*.xml;
 *    任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件。
 *    建议以后sql映射文件，放在 mapper下
 * ● 容器中也自动配置好了 SqlSessionTemplate
 * ● @Mapper 标注的接口也会被自动扫描；建议直接 @MapperScan("com.atguigu.admin.mapper")
 *   批量扫描就行
 */
@Controller
public class 引入mybatis {

    @Autowired
    public UserLongService userLongService;

    @Autowired
    public LoginService loginService;

    @ResponseBody
    @GetMapping("/getUserById")
    public UserLong getUserById(
            @RequestParam(value = "id",defaultValue = "1") Long id){
        return userLongService.getUserById(id);
    }
    @ResponseBody
    @GetMapping("/insertUserLong")
    public UserLong insertUserLong(UserLong userLong){

        boolean b = userLongService.insertUserLong(userLong);
        if(b) return userLong;
        else return userLong;
    }

    @GetMapping("/userLongs")
    public String userLongs(Model model){
        List<UserLong> userLongs = userLongService.getUserList();
        model.addAttribute("userLongs",userLongs);
        return "userLongTable";
    }
    @GetMapping("/logins")
    public String logins(Model model){
        List<Login> list = loginService.list();
        model.addAttribute("logins",list);
        return "loginTable";
    }
    @GetMapping("/loginF")
    public String loginF(
            @RequestParam(value = "pn",defaultValue = "1")Integer pn,//页面
                         Model model,
            RedirectAttributes ra){//可以重定向 传递数据
        //但是 mybatis-plus 要想分页  得加分页插件
        //详见
        int current = pn;//第一页  从1开始
        int size = 2;//每页多少个
        Page<Login> page = new Page<>(current,size);
        Page<Login> pages = loginService.page(page,null);//null 因该是判断条件
        pages.getRecords();//里面是真正的信息数据
        model.addAttribute("logins",pages);
        return "loginTable";
    }

}
